/**
 * 
 */
package com.study.proxy.ext;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * @author Administrator
 * @date 2019年6月22日
 */

public class ExtJdkInvocationHandler implements MyExtInvocationHandler {
    /**
     * 目标执行对象 (被代理的对象)
     */
    private Object target;

    public ExtJdkInvocationHandler(Object target) {
        this.target = target;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws InvocationTargetException, IllegalAccessException {
        System.out.println("纯手写JDK动态代理日志拦截开始>>>>>");
        Object result = method.invoke(target, args);// 执行代理对象的方法
        System.out.println("纯手写JDK动态代理日志拦截结束>>>>>");
        return result;
    }

	
    /**
     * 获取代理对象
     *
     * @param <T>
     * @return
     */
    public <T> T getProxy() {
        //return (T) new $Proxy0(this);
        return (T) MyProxy.newProxyInstance(new JavaClassLoader(), OrderService.class, this);

    }
}